package com.gmrz.uaf.servlet.v1.common;

import com.gmrz.uaf.servlet.v1.filter.RequestAppSecretFilter;
import com.gmrz.uaf.servlet.v1.filter.RequestFilter;
import com.gmrz.uaf.servlet.v1.filter.ResponseFilter;
import com.gmrz.uaf.servlet.v1.servlet.*;
import com.google.inject.servlet.ServletModule;

/**
 * Created by gmrz-ops on 2017/7/12.
 */
public class WebModule extends ServletModule {

    @Override
    protected void configureServlets() {
        super.configureServlets();
        //在这里可以完成完成加一些url绑定到我们的servlet上
        //原先这一部分是在web.xml里面配置的
        serve(Constants.REQ_RECEIVE).with(UAFReqRequestServlet.class) ;
        serve(Constants.REQ_SEND).with(UAFReqResponseServlet.class) ;
        serve(Constants.AUTH_RECEIVE).with(UAFAuthRequestServlet.class) ;
        serve(Constants.AUTH_SEND).with(UAFAuthResponseServlet.class) ;
        serve(Constants.REQ_DELETEALL).with(UAFDeregAllRequestServlet.class) ;
        serve(Constants.REQ_DELETE).with(UAFDeregRequestServlet.class) ;
        serve(Constants.DEVICE_SUPPORT).with(UAFDeviceServlet.class) ;
        serve(Constants.DEVICE_LIST).with(UAFDeviceListServlet.class) ;
        serve(Constants.EXTEND).with(UAFExtendServlet.class) ;
        serve(Constants.REQ_STATUS).with(UAFReqStatusServlet.class) ;
        serve(Constants.IDAUTH_RECEIVE).with(UAFIDAuthRequestServlet.class) ;
        serve(Constants.IDAUTH_SEND).with(UAFIDAuthResponseServlet.class) ;
        serve(Constants.ADD_UVI).with(UAFAddUviServlet.class) ;
        serve(Constants.DEVICE_SUPPORT_V2).with(UAFDeviceV2Servlet.class) ;
        serve(Constants.OOBAUTH_RECEIVE).with(UAFOOBAuthRequestServlet.class) ;
        serve(Constants.OOBAUTH_SEND).with(UAFOOBAuthResponseServlet.class) ;
        serve(Constants.OOBGENERATE).with(UAFOOBGenerateRequestServlet.class) ;
        serve(Constants.OOBSTATUS).with(UAFOOBStatusRequestServlet.class) ;
        serve(Constants.GETUSERINFO).with(UAFUserInfoRequestServlet.class) ;
        serve(Constants.CERTUPDATESTATUS).with(UAFUpdateCertStatusServlet.class) ;
        serve(Constants.CERTGETINFO).with(UAFGetCertInfoServlet.class) ;
        serve(Constants.CERTUPDATE).with(UAFUpdateCertServlet.class) ;
        serve(Constants.GETUSERCLEARINFO).with(UAFUserClearInfoRequestServlet.class) ;
        serve(Constants.CERTACTIVATE).with(UAFActivateCertServlet.class) ;
        serve(Constants.DEVICE_INFO).with(UAFDeviceInfoRequestServlet.class) ;
        serve(Constants.WEBAUTHN_REQ_LIST).with(UAFRegListServlet.class) ;
        serve(Constants.WEBAUTHN_REQ_DELETE).with(UAFRegDeleteServlet.class) ;
        serve(Constants.REQ_LIST).with(UAFQueryRegListServlet.class) ;
        serve(Constants.DEVICE_COSTED).with(UAFDeviceCostedServlet.class) ;

        // 配置请求的过滤器，校验请求的接口是否本系统支持的
        filter("/*").through(new RequestFilter());
        // 配置请求的过滤器，校验接口访问限制
        filter("/*").through(new RequestAppSecretFilter());
        // 配置响应的过滤器，在请求接口处理完成后，对响应进行过滤，将响应存储日志
        filter("/*").through(new ResponseFilter());
    }
}
